package cn.iocoder.yudao.module.trade.dal.dataobject.giftcard;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.util.Date;

/**
 * 礼品卡
 */
@TableName("gift_card")
@KeySequence("gift_card_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GiftCardDO extends BaseDO {

    public static final Long LOGISTICS_ID_NULL = 0L;

    /**
     * 礼品卡编号，主键自增
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 礼品卡名称
     */
    private String giftCardTitle;

    /**
     * 礼品卡 背景图片
     */
    private String giftCardPicUrl;

    /**
     * 礼品卡微信 id
     */
    private String wxCardId;

    /**
     * 交易订单 id
     */
    private Long tradeOrderId;

    /**
     * 选择的祝福语
     */
    private String blessings;

    /**
     * 状态
     * <p>
     * 枚举 {@link cn.iocoder.yudao.module.trade.enums.giftcard.GiftCardStatusEnum}
     */
    private Integer giftCardStatus;

    /**
     * 创建人 社交用户的编号   system_social_user
     */
    private Long createSocialUserId;

    /**
     * 创建人 member_user
     */
    private Long createMemberUserId;

    /**
     * 当前所属人 社交用户的编号   system_social_user
     */
    private Long currentOwnerSocialUserId;

    /**
     * 当前所属人 member_user
     */
    private Long currentOwnerMemberUserId;

    /**
     * 礼品卡挑选商品组合 {giftCardGroupId:1,num:2}
     */
    private String giftCardGroup;

    /**
     * 礼品卡商品总价，单位：分
     */
    private Integer giftCardPrice;

    /**
     * 有效期开始时间
     */
    private Date validityStartTime;

    /**
     * 有效期结束时间
     */
    private Date validityEndTime;

    /**
     * 类型
     * <p>
     * 枚举 {@link cn.iocoder.yudao.module.trade.enums.giftcard.GiftCardGroupTypeEnum}
     */
    private Integer groupType;


}
